#!/usr/bin/python

##################################
#                                #
#  David Lladro - S2 Grupo       #
#     Noviembre 2011             #
#  Mail: david.lladro@gmail.com  #
#  Twitter: @davidlladro         #
#                                #
#                                #
##################################

#
# Usage: python android_perms_apk /path/to/apks/
#

# paquetes necesarios 
import urllib2, subprocess,time, glob, sys

# Host y archivo 
directorio = sys.argv[1]
lista_apk = glob.glob(directorio + "/*.apk")
num_juegos = 0
lista_perm = {}
salida = open("permisos_apk.xml", "w")
salida.write("<Aplicaciones>\n")
for apk in lista_apk:
	num_juegos = float(num_juegos) + 1
	titulo = apk.split("/")[-1]
	print "+ [OK] Procesado " + titulo 
	salida.write("\t<App>\n")
	salida.write("\t\t<Titulo>")
	salida.write(titulo)
	salida.write("</Titulo>\n")
	salida.write("\t\t<Permisos>\n")
	conversion = subprocess.Popen(['aapt', 'd', 'permissions', apk], stderr=subprocess.STDOUT, stdout = subprocess.PIPE)
	stdout_value = conversion.communicate()[0]
	stdout_value = stdout_value.split("\n")
	try:
		for perm in stdout_value:
			if "android.permission" in perm:
				permiso = perm.split(".")[-1]
				salida.write("\t\t")
				salida.write(permiso)
				if not lista_perm.has_key(permiso):
					lista_perm[permiso] = 1
				else:
					lista_perm[permiso] = lista_perm[permiso] + 1
				salida.write("\n")
	except:
		print "No hay mas permisos"

        salida.write("\t\t</Permisos>\n")
        salida.write("\t</App>\n")
			

	
salida.write("</Aplicaciones>\n\n")
salida.close()

salida = open("estadisticas_apk.txt", "w")
salida.write("Numero total de juegos: ")
salida.write(str(num_juegos))
salida.write("\n\n")
salida.write("Numero de aplicaciones que usa cada permiso:\n")

l = lista_perm.items()
l.sort(key=lambda x: x[1])
l.reverse()
for lista_externa in l:
	stat= str((lista_externa[1]*100)/num_juegos) + "%\t\t" + str(lista_externa[1]) + "\t\t\t" + str(lista_externa[0]) + "\n"
	salida.write(stat)

salida.close()
